﻿#!/usr/bin/env python3
# -*- coding: utf-8 -*-

#Python内置的一种数据类型是列表：list。list是一种有序的集合，可以随时添加和删除其中的元素
#list里面的元素的数据类型也可以不同
#tuple所谓的“不变”是说，tuple的每个元素，指向永远不变。即指向'a'，就不能改成指向'b'，指向一个list，就不能改成指向其他对象，但指向的这个list本身是可变的
classmates = ['Michael', 'Bob', 'Tracy']
print(classmates)
print(len(classmates))
print(classmates[-1])
classmates.append('Adam')
classmates.insert(1, 'Jack')
print(classmates.pop())
print(classmates.pop(-1))
print(())
print([])
print((1,))

#if语句的完整形式就是：
age = 3
if age >= 18:
    print('adult')
elif age >= 6:
    print('teenager')
else:
    print('kid')
#只要x是非零数值、非空字符串、非空list等，就判断为True，否则为False。
#input()返回的数据类型是str;Python提供了int()函数来把str转换成整数.
x = 1
if x:
    print('True')


#Python的循环有两种，一种是for...in循环;第二种循环是while循环
#Python提供一个range()函数，可以生成一个整数序列，再通过list()函数可以转换为list
print(list(range(5)))

#Python内置了字典：dict的支持，dict全称dictionary，在其他语言中也称为map，使用键-值（key-value）存储，具有极快的查找速度
#如果key不存在，dict就会报错,要避免key不存在的错误，有两种办法，一是通过in判断key是否存在;二是通过dict提供的get()方法，如果key不存在，可以返回None，或者自己指定的value.
#要删除一个key，用pop(key)方法，对应的value也会从dict中删除
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
d['Michael'] = 85
print(d['Michael'])
print('Thomas' in d)
print(d.get('Thomas'))
print(d.get('Thomas', -1))
print(d.pop('Bob'))


#set和dict类似，也是一组key的集合，但不存储value。由于key不能重复，所以，在set中，没有重复的key。
#要创建一个set，需要提供一个list作为输入集合
#通过add(key)方法可以添加元素到set中，可以重复添加，但不会有效果：
#通过remove(key)方法可以删除元素
#两个set可以做数学意义上的交集、并集等操作
#对于不变对象来说，调用对象自身的任意方法，也不会改变该对象自身的内容。相反，这些方法会创建新的对象并返回，这样，就保证了不可变对象本身永远是不可变的
s = set([1, 1, 2, 2, 3, 3])
s.add(4)
s.remove(4)
print(s)
s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
print(s1 & s2)
print(s1 | s2)
a = ['c', 'b', 'a']
print(a.sort())
a = 'abc'
print(a.replace('a', 'A'))
print(a)


def my_abs(x):
    if not isinstance(x, (int, float)):
        raise TypeError('bad operand type')
    if x >= 0:
        return x
    else:
        return -x

import math


